この インストラクションセットアーキテクチャ(ISA) は基本的な 抽象化レベル であり、ソフトウェアとハードウェアの間の正式な契約でもある。高レベル言語であるCなどのように複雑さを隠す一方で、ISAは アーキテクチャ状態——プロセッサのレジスタとメモリの正確な構成を明らかにする。
1. アーキテクチャ状態
x86-64 CPUは、いくつかの主要な要素を通じてその状態を定義する:
- プログラムカウンタ(%rip): 次の命令のアドレスを保持する。
- 整数レジスタファイル: 16個の汎用レジスタ(例:
%rax、%rbx)で64ビットの値を格納する。 - 条件コード: 制御フロー用のフラグ(ZF、SF、CF、OF)。
- ベクトルレジスタ: たとえば YMMレジスタ (256ビット)でSIMD操作に使用される。
2. メモリの抽象化
マシンコードはメモリを巨大な バイトアドレス可能な配列として見ている。x86-64は64ビットの仮想アドレスをサポートしているが、現在の実装では多くの場合48ビットのアドレス空間($2^{48}$バイト)を使用している。データサイズは ワード (16ビット)、 ダブルワード (32ビット)、および クォードワード (64ビット)に分類する。
3. 遺伝と互換性
「ムーアの法則」によって駆動され ムーアの法則、インテルは 8086 から Core i7 Haswellまで進化してきた。ISAは 後方互換性を確保しており、旧来のマシンコードが現代のマルチコア、ハイパースレッド対応ハードウェア上で実行可能になる。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>